"""
作业：
1、有这样的一个列表，深度不可知，列表里面还会嵌套列表，
我想要把这个列表从左到右拼接成一个新的列表，且顺序不变
举例：[12,33,[11,22,33,[55,66,99]],[55,66]]
变成：[12, 33, 11, 22, 33, 55, 66, 99, 55, 66]
2、编写装饰器，为多个函数加上认证的功能（用户的账号密码）
 要求登录成功一次，后续的函数都无需输入用户名和密码
3、请实现一个装饰器，把函数的返回值+100然后返回
4、请实现一个装饰器，通过一次调用使函数重复执行5次
5、输入任意个字符串,分别实现从小到大输出和从大到小输出
6、接收n个数字，求这些参数数字的和
7、编写一个函数，实现数字的自增（从0开始，每调用一次，数字+1）
"""


def list_spliced(list_expand):
    result = []
    for item in list_expand:
        if isinstance(item, list):
            result.extend(list_spliced(item))
        else:
            result.append(item)
    return result
list_expand = list_spliced([1, 2, 3,[4,5,6,[7,8,9]]])
print(list_expand)






def log_in():
    login_name="qq"
    login_password="123456"
    name=input("请输入用户名：")
    password=input("请输入密码")
    if name==login_name and password==login_password:
        print("登陆成功！")
        return True
    else:
        print("登录失败!")
        return False

if_login=False

def condition_login(func):
    def wrapper(*args, **kwargs):
        global if_login
        if not if_login:
            print("请登录")
            if_login= log_in()
        if if_login:
            return func(*args, **kwargs)
        else:
            return None
    return wrapper

@condition_login
def funca():
    print("查看")
@condition_login
def funca2():
    print("查看2")
@condition_login
def funca3():
    print("查看3")

funca()
funca2()
funca3()




def add_100(func):
    def wrapper(*args, **kwargs):
        result = func(*args, **kwargs)
        return result + 100
    return wrapper

@add_100
def add1(x):
    return x

print(add1(1))




def func_5(func):
    def wrapper(*args, **kwargs):
        for i in range(5):
             func(*args, **kwargs)
    return wrapper

@func_5
def func1(x):
    print(f"{x}执行了一次")
    return x

func1("aaa")





def x_sorted(func):
    def wrapper(*args, **kwargs):
        aa = func(*args, **kwargs)
        sorted_up=sorted(aa)
        sorted_down=sorted(aa, reverse=True)
        print("升序是",sorted_up,"降序是" ,sorted_down)
        return sorted_up, sorted_down
    return wrapper

@x_sorted
def put_in():
    x=input("请输入任意个字符串：")
    return x

put_in()



def sum_n(func):
    def wrapper(*args):
        x = func(*args)
        return sum(x)
    return wrapper

@sum_n
def sum_n2():
    x = (1,2,3,4,5)
    return x
print(sum_n2())



num1=0
def add_1():
    global num1
    num1 += 1
    print(num1)
    return num1

add_1()
add_1()
add_1()
add_1()




